草庐IT

反射简化 JDBC ResultSet

全部标签

c# - 反射。我们可以使用它实现什么?

我正在阅读和学习C#中的反射。知道它对我的日常工作有什么帮助就很好了,所以我希望比我更有经验的人告诉我一些示例或想法,了解我们可以使用它实现什么样的事情,或者我们如何减少代码量我们写的。谢谢。 最佳答案 我最近用它来为我的枚举中的字段添加自定义属性:publicenumShapeName{//Lines[ShapeDescription(ShapeType.Line,"HorizontalScrollDistance","Thehorizontaldistancetoscrollthebrowserinordertocenterth

C# 反射 - 派生类型中的基类静态字段

在C#中,当我反射(reflect)派生类型时,为什么看不到基类的静态字段?我已经尝试了type.GetFields(BindingFlags.Static)和type.GetFields()。 最佳答案 这就是它的工作原理。static成员实际上是非面向对象的东西。它们不是多态的,它们确实属于它们的声明类型,并且与继承层次结构中的其他类型无关。例如,在访问派生类中的静态成员之前,不需要运行基类的静态初始化程序。除非指定了BindingFlags.FlattenHierarchy,否则不会返回基类的static成员:type.Get

c# - 在 C# 中获取程序集描述的简化方法?

我在阅读一本.NET2.0的书时发现了这个获取应用程序程序集描述的示例代码:staticvoidMain(string[]args){Assemblyassembly=Assembly.GetExecutingAssembly();object[]attributes=assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute),false);if(attributes.Length>0){AssemblyDescriptionAttributedescriptionAttribute=(AssemblyDescri

c# - 如何保护我的私有(private)函数免受反射执行?

看到这个之后:Doaccessmodifiersaffectreflectionalso?我试过使用它,但它不起作用:如何防止反射执行我的私有(private)方法? 最佳答案 如果有人目前可以在您的私有(private)方法上使用反射,那么他们已经有足够的访问权限来回避您放置在他们面前的任何其他东西。以较低的信任度运行可能是一种选择,但这只是为了防止诸如插件之类的东西拥有过多的访问权限——它不会阻止具有(比如)管理员访问权限的用户访问该框,他们可以简单地提升访问权限。如果您不希望代码运行,请不要将其放在恶意用户的物理范围内;将其保

c# - 反射(reflect)接口(interface)的所有属性,包括继承的属性?

我有一个表示接口(interface)的System.Type实例,我想获取该接口(interface)上所有属性的列表——包括从基接口(interface)继承的那些。我基本上希望从接口(interface)获得与类相同的行为。例如,给定这个层次结构:publicinterfaceIBase{publicstringBaseProperty{get;}}publicinterfaceISub:IBase{publicstringSubProperty{get;}}publicclassBase:IBase{publicstringBaseProperty{get{return"Bas

c# - 反射生成的类型和泛型

我与Reflection.Emit又经历了一个不愉快的时刻和类型管理。比如说,我有一个名为MyType的类型这是在动态生成的程序集中定义的。打电话MyType.GetMethods()结果NotSupportedException,这让我不得不编写自己的包装器和查找表集。然而,当我调用GetMethods()时,同样的事情发生了。或使用我自己的类型作为泛型参数的标准泛型类型的任何其他自省(introspection)方法:Tuple=>工作正常Tuple=>异常我可以从泛型类型定义中获取方法列表:typeof(Tuple但是,这些方法具有通用占位符而不是实际值(如T1、TResult等

c# - 如何使用反射获取构造函数作为 MethodInfo

构造函数如下所示:publicNameAndValue(stringname,stringvalue)我需要使用反射将其作为MethodInfo获取。它尝试了以下操作,但没有找到构造函数(GetMethod返回null)。MethodInfoconstructor=typeof(NameAndValue).GetMethod(".ctor",new[]{typeof(string),typeof(string)});我做错了什么? 最佳答案 Type.GetConstructor.请注意,这会返回一个ConstructorInfo而

c# - 反射(reflection):如何在 C# 7.0 中查找和调​​用本地函数?

我有一个私有(private)静态泛型方法,我想使用反射调用它,但实际上我想将它“捆绑”到另一个方法中。C#7.0支持本地函数,因此这绝对是可能的。你会说“你为什么不直接调用它呢?”但我正在使用它来获得以强类型方式使用对象和System.Type的能力,因此我需要动态调用它。如果我拥有这段代码,它就已经可以工作了,因为它是自己的私有(private)静态泛型方法。privatestaticvoidHandleResponse(objectdata,TypeasType){varapplication=typeof(Program);application.GetMethod(nameo

c# - 使用 Intellisense 和编译时检查提取属性名称以进行反射

好的。所以我有一些代码将winForm上的某些控件映射到对象中的某些属性,以便在数据发生某些事情时对控件执行某些事情。一切都很好,工作正常。不是问题。问题是,为了将项目添加到映射,我调用了一个如下所示的函数:this.AddMapping(this.myControl,myObject,"myObjectPropertyName");我遇到的问题是,在编译时很难区分上面一行和下面一行之间的区别:this.AddMapping(this.myControl,myObject,"myObjectPropretyName");因为最后一个参数是一个字符串,所以没有编译时检查或任何类似的东西来

C# 使用反射创建结构

我目前正在编写一些代码,使用C#中的反射将一般对象保存到XML。问题是在某些对象中读取XML时是结构,我不知道如何初始化该结构。对于我可以使用的类(class)ConstructorInfoconstructor=SomeClass.GetConstructor(Type.EmptyTypes);但是,对于一个结构体,没有不带参数的构造函数,所以上面的代码将构造函数设置为null。我也试过了SomeStruct.TypeInitializer.Invoke(null)但这会抛出一个成员访问异常。谷歌没有给出有希望的命中率。任何帮助将不胜感激。 最佳答案